
// 引入fs模块，用于文件操作
const fs = require('fs');
const config = require('./config.js');

// 定义一个对象A，用于存储文件的字节数和文件名
const A = {};

// 定义一个函数，用于遍历D盘符下的文件
function traverse(dir) {
  // 读取目录下的所有文件和子目录（同步方式）
  const files = fs.readdirSync(dir);
  // 遍历每个文件或子目录
  for (let file of files) {
    if (config.skipDirectory.includes(file)) continue;
    // 拼接完整的路径
    const path = dir + file;
    // 获取文件或子目录的状态信息（同步方式）
    const stats = fs.lstatSync(path);
    // 如果是目录，递归调用遍历函数
    if (stats.isDirectory()) {
      traverse(path + '\\');
      continue;
    }
    // 如果是文件，获取文件的字节数
    const videoNameArr = file.split('.');
    // suffix = [ '视频1', 'mp4' ] 取最后一个元素，判断是不是视频类型
    const suffix = videoNameArr[videoNameArr.length - 1] .toLocaleLowerCase();
    if (!config.videoType.includes(suffix)) continue;
      let size = stats.size;
      // 如果对象A中已经有该字节数作为key，说明遇到相同大小的文件，打印文件名
      if (A[size]) {
        console.log(path, '', '', A[size]);
      }
      // 否则，将该字节数和文件名作为键值对存入对象A中
      else {
        A[size] = path;
      }
  }
  
  return traverse
}

// 调用遍历函数，传入D盘符作为参数
traverse('K:\\')('I:\\');
fluctuate();

// 定义一个函数，用于遍历对象A的每个key，并进行加减操作
function fluctuate() {
  // 遍历对象A的每个key
  for (let key in A) {
    // 将key转换为数字类型
    const num = Number(key);
    // 循环加减一百次1
    for (let i = 1; i <= 100; i++) {
      if (A[num + i]) {
        console.log(`浮动+ ${num + i} ` + A[num], '', '', A[num + i]);
      }
    }
    for (let i = 100; i <= 0; i--) {
      if (A[num - i]) {
        console.log(`浮动- ${num + i} ` + A[num], '', '', A[num + i]);
      }
    }
  }
}
